package com.transsion.clouddemo.core.network

import android.text.TextUtils
import com.asa.wbcrypto_wrapper_oscloud_client.Wbcrypto_Wrapper_OSCloud_Client

object EncryptionUtil {
    /**
     * 加密数据体
     *
     * @param data 数据体
     * @return 加密结果
     */
    fun encrypt(data: String?): String {
        if (TextUtils.isEmpty(data)) {
            throw NullPointerException("data为空")
        }
        return Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_Encrypt_String_Wrapper(data)
    }

    /**
     * 获取AesKey
     *
     * @param data 数据体
     * @return aesKey
     */
    fun getAesKey(data: String?): ByteArray {
        if (TextUtils.isEmpty(data)) {
            throw NullPointerException("data为空")
        }
        return Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_GenKey_Wrapper(data, 16)
    }


    /**
     * 解密数据体
     *
     * @param data 加密后的数据
     * @return 解密后的数据
     */
    fun decode(data: String?): String {
        if (TextUtils.isEmpty(data)) {
            throw NullPointerException("data为空")
        }
        return Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_Decrypt_String_Wrapper(data)
    }

    /**
     * 签名
     *
     * @param data 需要签名的信息
     * @return 签名信息
     */
    fun sign(data: String?): String {
        if (TextUtils.isEmpty(data)) {
            throw NullPointerException("data为空")
        }
        return Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_Sign_String_Wrapper(data)
    }

    /**
     * 验签
     *
     * @param data 加签名的数据体
     * @param sign 签名信息
     * @return 是否验签成功
     */
    fun verify(data: String?, sign: String?): Boolean {
        if (TextUtils.isEmpty(data) || TextUtils.isEmpty(sign)) {
            throw NullPointerException("data或sign为空")
        }
        return Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_Verify_String_Wrapper(data, sign)
    }

    val cipherVersion: String
        get() = Wbcrypto_Wrapper_OSCloud_Client.ASA_Wbcrypto_Cipher_Version()
}
